<?php

namespace app\home\controller;

use app\adminapi\controller\BaseApi;
use think\Controller;
use think\facade\Request;
class Login extends Controller
{
    public function login()
    {
        //渲染登录
        $this->view->engine->layout(false);
        return view();
    }
    // 登录
    public function do_login(){
        //接收参数
        $param=input();
        // dump($param);
        //参数验证码
        $validate=$this->validate($param,[
            'username|用户名'=>'require',
            'password|密码'=>'require|length:6,20',
        ]);

        // 密码和用户名是否已经注册（查询）
        $result=\app\home\model\User::where(function($query) use($param){
                $query->where('username',$param['username'])
                ->whereOr('email',$param['username']);
        })->where('password',MD5($param['password']))->find();
        // dump($repwd);
        //如果有 就跳转到首页
            // if(!empty($result)){
            if($result!=''){
                session('user_info',$result->toArray());
                $this-> redirect("/");
            }else{
                // 没有给出错误信息
                $this->error("用户名或者密码错误");
            }
        
            // // 方法2
            // $info=\app\home\model\User::where('phone',$param['username'])->
            //       whereOr('username',$param['username'])->find();
            // if($info && $info['password']==$param['password']){
            //     $this->redirect('/');
            // }else{
            //     $this->error('用户名或者密码错误');
            // }
    }
    // 注册页面展示
    public function register()
    {
        //渲染注册
        $this->view->engine->layout(false);
        return view();
    }
    // 登录页面展示
    public function phone()
    {
        // $param=Request::param();
        // 获取数据
        $param=input();
        // 第一种方法
//         $rule=[
//             'phone|手机号'=>'min:15',
//             'password|密码'=>'max:10',
//         ];
// //      // 错误信息
//         $msg=[
//             'phone'=>'电话格式不正确',
//             'password'=>'密码不能超过10位',
//         ];
        // $validate=new \think\Validate($rule,$msg);
        // 第二种方法
        $validate=$this->validate($param,[
            'phone|手机号'=>'require|reg:1[3-9]\d{9}|unique:user,phone',
            'code|验证码'=>'require|length:4',
            'password|密码'=>'require|length:6,20|confirm:repassword',
        ]);
        if($validate!==true){
            $this->error($validate);
        }
        //验证验证码
        $code=cache('register_code_'.$param['phone']);
        if($code!=$param['code']){
            $this->error('验证码错误');
        }
        // 注册用户(写入数据库 添加数据)
        $param['password']=MD5($param['password']);
        \app\home\model\User::create($param,true);
        $this->redirect('/login');

        // if(!$validate->check($param)){
        //     $err=$validate->getError();
        //     $this->fail($err);
        // }
    }
    //发送验证码
    public function sendCode(){
        //接收参数
        $param=input();
        //检测参数
        //生成验证码
        $code=mt_rand(1000,9999);
        $content="你注册的验证码是{$code}";
        //保存你的验证码
        cache('register_code'.$param['phone'],$code,240);
        cache('register_time_'.$param['phone'],time(),240);
        //发送验证码
        $res=['code'=>200,
              'msg'=>"短信发送成功",
              'data'=>$content];
              json($res)->send();die;
    }
}
